#!/bin/bash

# shellcheck disable=SC2086,SC2181 

declare -i version

if [[ $(id -u) -ne 0 ]]; then
  echo "This script must be executed as root or using sudo."
  exit 99
fi

arch="$(dpkg --print-architecture)"
echo "Arch :: ${arch}"

# exit if not supported architecture
case ${arch} in
  arm64|armhf|amd64|i386)
    echo "Supported architecture"
    ;;
  *)
    echo "Unsupported architecture :: ${arch}"
    exit 5
    ;;
esac

url="https://gitee.com/anotherday/omv-packages/raw/master"

version=$(dpkg -l openmediavault | awk '$2 == "openmediavault" { print substr($3,1,1) }')
echo "OMV ${version}"

codename="$(lsb_release --codename --short)"
echo "Codename :: ${codename}"

if [ ${version} -lt 5 ]; then
  echo "Unsupported version of openmediavault"
  exit 0
fi

list="/etc/apt/sources.list.d/omvextras.list"
if [ -f "${list}" ]; then
  rm ${list}
fi

if ! grep -qrE "^deb.*${codename}\s+main" /etc/apt/sources.list*; then
  echo "Adding missing main repo..."
  echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ ${codename} main contrib non-free" | tee -a /etc/apt/sources.list
fi
if ! grep -qrE "^deb.*${codename}-updates\s+main" /etc/apt/sources.list*; then
  echo "Adding missing main updates repo..."
  echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ ${codename}-updates main contrib non-free" | tee -a /etc/apt/sources.list
fi

cat <<EOF > /etc/apt/sources.list.d/omvextras.list
deb [signed-by=/usr/share/keyrings/omvextras.gpg arch=${arch}] https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/openmediavault-plugin-developers sandworm main
EOF

cat <<EOF > /etc/apt/sources.list.d/openmediavault.list
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public sandworm main
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages sandworm main
EOF

cat <<EOF > /etc/apt/sources.list.d/openmediavault-os-security.list
# default 
# deb http://security.debian.org/debian-security bookworm-security main contrib non-free
# deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free
#
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
EOF

cat <<EOF > /etc/apt/sources.list.d/openmediavault-kernel-backports.list
# deb [signed-by=/usr/share/keyrings/debian-archive-bookworm-automatic.gpg] http://httpredir.debian.org/debian bookworm-backports main contrib non-free non-free-firmware
deb [signed-by=/usr/share/keyrings/debian-archive-bookworm-automatic.gpg] https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
EOF

echo "Downloading omv-extras.org plugin for openmediavault ${version}.x ..."
file="openmediavault-omvextrasorg_latest_all${version}.deb"

echo "Updating repos before installing..."
apt-get update

echo "Install prerequisites..."
apt-get --yes --no-install-recommends install gnupg
if [ $? -gt 0 ]; then
  echo "Unable to install prerequisites.  Exiting."
  exit 10
fi

if [ ! -f "${file}" ]; then
  # rm ${file}
  wget ${url}/${file}
fi

if [ -f "${file}" ]; then
  dpkg -i ${file}

  if [ $? -gt 0 ]; then
    echo "Installing other dependencies ..."
    apt-get -f install
  fi

  echo "Updating repos ..."
  apt-get update
else
  echo "There was a problem downloading the package."
fi

echo -e "\n\nPress ctrl-shift-R in the browser after signing in to the OMV web interface."

exit 0

